home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1993 / Internet Info CD-ROM (Walnut Creek) (1993).iso / inet / ien / ien-119 < prev    next >
Text File  |  1988-12-01  |  96KB  |  2,180 lines

  1.  
  2.      
  3.      
  4.      
  5.      
  6.      
  7.      
  8.      
  9.      
  10.      
  11.      
  12.      
  13.      
  14.      
  15.      
  16.      
  17.      
  18.      
  19.      
  20.      
  21.      
  22.                                   IEN 119
  23.      
  24.      
  25.                  ST - A Proposed Internet Stream Protocol
  26.      
  27.                                     by
  28.      
  29.                               James W. Forgie
  30.      
  31.      
  32.                         M. I. T. Lincoln Laboratory
  33.      
  34.                              7 September 1979
  35.      
  36.      
  37.      
  38.      
  39.      
  40.      
  41.      
  42.      
  43.      
  44.      
  45.      
  46.      
  47.      
  48.      
  49.      
  50.      
  51.      
  52.      
  53.      
  54.      
  55.      
  56.      
  57.      
  58.      
  59.      
  60.      IEN 119                      ST.DOC              7 September 1979
  61.      
  62.      
  63.      
  64.      
  65.      1.0  INTRODUCTION
  66.      
  67.              The internet stream protocol (ST) described in this
  68.      document has been developed to support efficient delivery of
  69.      streams of packets to either single or multiple destinations in
  70.      applications requiring guaranteed data rates and controlled delay
  71.      characteristics.  The principal applications with these
  72.      requirements are point-to-point speech communication and voice
  73.      conferencing.  While ST has been developed as a part of the ARPA
  74.      Internet Program and has been formulated as an extension to the
  75.      presently defined Internet Protocol (IP), it is not likely to
  76.      find useful application in the current ARPA internet environment
  77.      where the networks and gateways lack the capacity to handle
  78.      significant speech communication.  Instead, ST is aimed at
  79.      application in wideband networks, in particular those intended to
  80.      carry a large fraction of packet voice in their traffic mixes.
  81.      Work is currently underway on such networks both for local access
  82.      and long haul use. These networks will serve as vehicles for
  83.      research on techniques for flow and traffic control and as
  84.      testbeds for evaluating the potential of packet technology for
  85.      providing economical speech communication.  The design of the ST
  86.      protocol represents a compromise among the sometimes conflicting
  87.      requirements of compatibility with the existing IP and the
  88.      gateways which handle it, the need for flexibility in supporting
  89.      flow and traffic control research, and transmission efficiency.
  90.      
  91.              The concepts in this protocol originated in the
  92.      deliberations of a working group consisting of Danny Cohen, Estil
  93.      Hoversten, and the author.  They have been influenced by
  94.      interactions with many other people.  In order to examine the
  95.      cost and feasibility of the protocol, the author has fleshed out
  96.      some aspects of the protocol in detail.  The other working group
  97.      participants have not had an opportunity to approve or modify
  98.      these detailed aspects of the protocol, and consequently all
  99.      responsibility for them lies with the author.
  100.      
  101.              The state of the protocol is such that, while there are
  102.      still details to be worked out, implementation could begin if the
  103.      protocol were acceptable to those interested.
  104.      
  105.      
  106.      
  107.      
  108.      
  109.      
  110.      
  111.      
  112.                                     -2-
  113.      
  114.      
  115.      IEN 119                      ST.DOC              7 September 1979
  116.      
  117.      
  118.      2.0  MOTIVATION AND GENERAL DESCRIPTION
  119.      
  120.              It is reasonable to ask why a new protocol is required to
  121.      handle applications such as point-to-point speech and voice
  122.      conferencing.  This section addresses that question and begins
  123.      with a brief statement of the requirements for packet speech
  124.      communication.  They are:
  125.      
  126.            1.  The network must be able to keep up with the data rate
  127.                requirements of the speech terminal.  Because no bits
  128.                need be transmitted during silent intervals, the
  129.                average data rate for conversational speech can be
  130.                expected to be between 40 and 50% of the peak data rate
  131.                for commonly used constant-rate encoding techniques.
  132.                Experimental variable-rate encoding techniques have
  133.                exhibited higher peak-to-average ratios.  The network
  134.                must be able to sustain the peak rate for the duration
  135.                of talkspurt that can be as long as 20 seconds.
  136.      
  137.            2.  The stream of packets containing a talkspurt (a
  138.                continuous segment of speech between silent intervals)
  139.                must be delivered with a delay dispersion whose spread
  140.                does not exceed some value that can be estimated with a
  141.                high probability of success prior to the start of the
  142.                talkspurt.  Since the individual packets of the spurt
  143.                will experience different delays as they pass through
  144.                the net, delay must be added at the receiver to allow
  145.                continuous speech to be played out for the listener.
  146.                It is necessary to predict the value of this smoothing
  147.                delay before starting to play out the talkspurt.
  148.                Packets that are delayed more than the predicted
  149.                worst-case value will arrive too late to be used, and
  150.                gaps will occur in the output speech.
  151.      
  152.            3.  Overall delay should be kept low.  If the overall
  153.                round-trip delay is less than about l/4 second,
  154.                conversations are carried out in a "normal" fashion
  155.                with considerable feedback from "listener" to "talker"
  156.                taking place.  When greater delay is experienced,
  157.                people switch to a more formal mode in which feedback
  158.                utterances are mostly suppressed, and the listener
  159.                generally waits until the talker indicates that he has
  160.                finished before saying anything.  User satisfaction
  161.                declines with increasing delay, but systems remain
  162.                usable for delays as long as several seconds.
  163.      
  164.            4.  The amount of speech for any one talker contained in a
  165.                packet (the basic unit subject to transmission loss)
  166.                should be kept small.  The loss of small (50 msec or
  167.                less) chunks of speech produces a degradation of
  168.                quality, but sentence intelligibility tends to be
  169.      
  170.      
  171.                                     -3-
  172.      
  173.      
  174.      IEN 119                      ST.DOC              7 September 1979
  175.      
  176.      
  177.                preserved up to fairly high percentage losses.  Larger
  178.                chunks of speech represent whole syllables or words,
  179.                and their loss can change the meaning of sentences.
  180.      
  181.            5.  Listeners will tolerate some packet loss without
  182.                downgrading the acceptability of the system, but the
  183.                probability of loss due to either failed or late
  184.                delivery must be kept in the order of 1% or less to be
  185.                considered acceptable for everyday (non-crisis) use.
  186.      
  187.            6.  As a network approaches its load limit it should reject
  188.                (or hold off) new offered load on a call basis not on
  189.                an individual packet basis.  Continuing to accept new
  190.                calls beyond capacity can result in unsatisfactory
  191.                communication for many users.
  192.      
  193.            7.  If packet-switched speech transmission is to become
  194.                economically competitive with circuit-switched
  195.                transmission, a further requirement must be met.  The
  196.                product of packet efficiency and average link
  197.                utilization must equal or exceed the efficiency of
  198.                circuit switching. That efficiency is defined as one
  199.                minus the fraction of the time that silence occurs in
  200.                conversational situations.  Estimates of this fraction
  201.                for real-world conversations give values for efficiency
  202.                between 40 and 50%.  We will use 45% as a convenient
  203.                figure for comparative purposes.  Packet switching can
  204.                easily take advantage of the silent intervals in a
  205.                conversation by not transmitting packets, but that
  206.                advantage may be lost through the combination of
  207.                overhead bits in packet headers (packet efficiency) and
  208.                the difficulty of operating communication links at high
  209.                average utilization while keeping queueing delays
  210.                within reasonable bounds.
  211.      
  212.              Conventional datagram networks are unsatisfactory for
  213.      speech communication except under conditions of light overall
  214.      load or where speech constitutes a small fraction of the overall
  215.      load and can be given priority service.  The difficulty with
  216.      datagram nets comes from their inability to provide the
  217.      controlled delay and guaranteed data rate required for speech.
  218.      Delay increases with offered load, slowly at light load, but
  219.      dramatically as average load approaches capacity. Flow control
  220.      strategies tend to be aimed at buffer management and fairness
  221.      goals, both of which will operate to restrict the effective data
  222.      rate available to an individual user as load increases.  Traffic
  223.      control strategies are mainly concerned with congestion control
  224.      and are primarily defensive, resulting in offered datagrams being
  225.      held off or refused when difficulties are detected.
  226.      Unfortunately for the speech user, by the time congestion is
  227.      detected, it is already too late.  For satisfactory speech
  228.      
  229.      
  230.                                     -4-
  231.      
  232.      
  233.      IEN 119                      ST.DOC              7 September 1979
  234.      
  235.      
  236.      service, congestion due to overload must be prevented.  Since a
  237.      datagram net has no knowledge of the a priori requirements of
  238.      users, it cannot develop traffic control strategies to meet these
  239.      requirements.
  240.      
  241.              Another disadvantage of datagrams for speech is their
  242.      packet efficiency.  The speech content of an individual user
  243.      packet can be anything from 50 or so bits up to 1200 or 1300 bits
  244.      depending upon the speech digitization technique in use.  The
  245.      need to carry full source and destination addresses as well as
  246.      other packet-handling information in each packet penalizes
  247.      datagrams relative to other packet and circuit switching
  248.      techniques.  In the internet case the penalty is worse since two
  249.      sets of header information have to be carried.
  250.      
  251.              For example, IP datagrams on SATNET carrying 40-msec
  252.      chunks of 16-kbps speech (a reasonaable chunk size and popular
  253.      data rate) would have a packet efficiency of about 56% and would
  254.      require utilization factors of about 80% to break even with
  255.      respect to circuit switching. It is unlikely that delay
  256.      characteristics would be satisfactory at this level of load.
  257.      
  258.              The goal of the ST design effort has been to attempt to
  259.      overcome both of the difficulties associated with datagrams.  ST
  260.      uses abbreviated internet headers and also allows speech from
  261.      many talkers to be aggregated into single packets for
  262.      transmission on wide-band networks where such aggregation is
  263.      possible.  For the case of ST messages on a wide-band SATNET each
  264.      carrying ten 40-msec chunks of 16-kbps speech for ten different
  265.      talkers, packet efficiency would be about 86% allowing break-even
  266.      link utilization to occur at 52%, a much more comfortable level
  267.      for assuring desirable delay characteristics.
  268.      
  269.              Overcoming the inability of datagram nets to maintain
  270.      data rates and delay characteristics as offered load increases is
  271.      more difficult to achieve than improving packet efficiency.
  272.      Circuit switching solves the problem by dedicating communication
  273.      capacity to individual streams.  The goal of ST is to support
  274.      traffic control policies that match stated user requirements to
  275.      available resources taking into account the statistical
  276.      properties of these requirements rather than the peak
  277.      requirements used in circuit switching.  ST does not itself
  278.      specify the traffic control algorithms to be used.  The
  279.      development of such algorithms is an area of research that the
  280.      protocol is intended to support.  Some algorithms may need only
  281.      rough statistical knowledge of user requirements and network
  282.      behavior.  Others may want more detailed knowledge and need to
  283.      monitor the behavior of individual streams.  The protocol is
  284.      intended to be general enough to support both extremes.  A
  285.      successful traffic control algorithm would retain much of the
  286.      statistical multiplexing advantages of datagram nets while at the
  287.      
  288.      
  289.                                     -5-
  290.      
  291.      
  292.      IEN 119                      ST.DOC              7 September 1979
  293.      
  294.      
  295.      same time gaining much of the guaranteed data rate and controlled
  296.      delay capabilities of circuit switched nets.  A packet net using
  297.      ST also has the ability of a circuit switched network to deny
  298.      access to, or negotiate lower rates with, users whose demands
  299.      would exceed capability.
  300.      
  301.              The ST protocol requires users to state the data rate and
  302.      delay requirements for a data stream before accepting any stream
  303.      data.  These requirements are used by ST agents (host processes
  304.      and gateways) to determine whether or not resources are available
  305.      in the catenet to support the offered stream load.  The
  306.      determination is based on knowledge of the stated requirements of
  307.      other users, negotiation with networks such as SATNET which have
  308.      built-in resource allocation mechanisms, and statistical load
  309.      estimates of traffic on networks that lack such mechanisms. In
  310.      order to accept the offered stream load, the cooperating agents
  311.      must find a route through networks with sufficient uncommitted
  312.      capacity to handle the new stream.  In the process of routing the
  313.      stream, intermediate agents retain information about the stream.
  314.      The existence of this information allows the use of abbreviated
  315.      headers on stream data packets and the efficient distribution of
  316.      the multi-addressed packets required for conferencing.
  317.      
  318.              The process used by ST agents in finding a route with
  319.      sufficient capacity between source and destination is assumed to
  320.      use a distributed routing algorithm to take advantage of the
  321.      robustness and flexibility characteristic of distributed packet
  322.      routing techniques.  In the simplest case, the result would be a
  323.      fixed-path internet route (a fixed set of intermediate agents
  324.      (gateways)) for the stream packets.  In the event of gateway or
  325.      network failure, rerouting would be required.  This can be
  326.      undertaken automatically, but success is not guaranteed, since
  327.      loss of the failed element or elements is likely to result in
  328.      inadequate capacity to carry the original load.  Fixed-path
  329.      routing is not required by the protocol.  If desired, dynamic
  330.      alternate routing of stream packets can be used at the discretion
  331.      of individual agents, but gateway implementation and the routing
  332.      process will be more complex if that option is chosen.  The
  333.      protocol described in this document assumes fixed-path routing.
  334.      
  335.              The goal toward which the cooperating ST agents in a
  336.      catenet work is the maintenance of a controlled delay, guaranteed
  337.      data rate environment in which packet speech communications can
  338.      take place in a satisfactory fashion.  Obviously, other non-
  339.      cooperating users of the networks involved in the catenet can
  340.      make it impossible to achieve that goal. Some independence of
  341.      other users can be obtained in some networks such as SATNET by
  342.      the use of dedicated resources.  Gateways can be programmed to
  343.      throttle non-cooperating internet traffic.  To some extent,
  344.      networks with poor delay characteristics can be avoided in the
  345.      routing process.  Priority service can be used in some nets to
  346.      
  347.      
  348.                                     -6-
  349.      
  350.      
  351.      IEN 119                      ST.DOC              7 September 1979
  352.      
  353.      
  354.      allow small quantities (proportionately) of ST traffic to be
  355.      handled satisfactorily in spite of the activities of other users.
  356.      However, the success of ST or any other approach to handling
  357.      packet speech will require either the cooperation of all network
  358.      users or the involvement of the networks themselves in providing
  359.      the required controlled delay, guaranteed data rate services.
  360.      
  361.      3.0  RELATIONSHIP TO IP
  362.      
  363.              ST is intended to operate as an extension of the
  364.      presently defined internet protocol (IP).  ST provides a
  365.      different kind of service than the datagram service offered by
  366.      IP.  ST must operate on the same level as IP in order to access
  367.      local net resources such as SATNET streams and to be able to take
  368.      advantage of any available local net multi-address delivery
  369.      capabilities to support conferencing applications.  If an ST
  370.      agent shares a local net port with an IP datagram handler, the
  371.      two must cooperate in the use of the port to regulate traffic
  372.      flow through the port.
  373.      
  374.              In order to get the advantage of abbreviated headers on
  375.      stream packets, ST uses a different header format than that used
  376.      for IP datagrams.  Packets with this format (see Section 5.0 for
  377.      details) are called ST packets in this document.  They pass from
  378.      one ST agent to another, and the abbreviated header information
  379.      changes on a hop-to-hop basis.  However, ST packets cannot be
  380.      transmitted until a route for the stream has been found and
  381.      intermediate agents have built routing tables to translate the
  382.      abbreviated headers.  Since end-to-end negotiation between ST
  383.      users is often desirable before stream routing takes place, for
  384.      example to agree on vocoder type and data rate, and it is
  385.      convenient for a user to interface to only one protocol handler,
  386.      ST provides a second type of service.  This service uses IP
  387.      datagrams with an "ST" value in the IP Protocol Field.  These
  388.      packets are called "IP.ST" packets.  They pass through datagram
  389.      handlers in gateways and reach ST agents only at their
  390.      destination hosts.
  391.      
  392.              A third type of packet is allowed by the protocol.  This
  393.      type is realized by embedding an ST packet in an IP.ST packet.
  394.      This method of sending an ST packet allows it to pass through
  395.      gateways that do not support the ST protocol but do support IP
  396.      datagrams.  Of course, the packet efficiency and traffic control
  397.      benefits of ST are lost in such a case, but the use of this
  398.      artifice could be justified on the grounds that any communication
  399.      is better than none.
  400.      
  401.      
  402.      
  403.      
  404.      
  405.      
  406.      
  407.                                     -7-
  408.      
  409.      
  410.      IEN 119                      ST.DOC              7 September 1979
  411.      
  412.      
  413.      4.0  CONCEPTS
  414.      
  415.              The key concept in ST is that of a connection.
  416.      Connections are supported by entities called agents which are
  417.      made aware of the connection during a setup process that precedes
  418.      use of the connection for data transfer.
  419.      
  420.      4.1  Agents
  421.      
  422.              There are four types of agents that may be involved in
  423.      supporting ST connections.  They are:
  424.      
  425.      4.1.1  ST Hosts
  426.      
  427.              The users of connections are processes that run in host
  428.      computers and communicate over connections through other
  429.      processes or software modules that adhere to the ST protocol.
  430.      Hosts having these processes or modules are called "ST hosts" (or
  431.      "hosts," when the context permits).  ST hosts perform the
  432.      functions of gateway halves in interacting with gateways for
  433.      internet traffic.  ST hosts share the management of local net ST
  434.      resources with the other agents on the local net and are capable
  435.      of routing connections to other agents as may be required.  In
  436.      networks with local multi-addressing capability, ST hosts make
  437.      use of this capability in routing conference connections.  In
  438.      networks lacking such capability, ST hosts may need to replicate
  439.      messages for conference connections unless a special agent called
  440.      a "replicator" is available in the local net.  In some local nets
  441.      it may be desirable for hosts to forward traffic for conference
  442.      connections.  The protocol allows but does not require the latter
  443.      capability.
  444.      
  445.      4.1.2  ST Gateways
  446.      
  447.              ST gateways perform routing and forwarding functions very
  448.      similar to those performed by IP gateways.  Unlike IP gateways,
  449.      they store information about the connections they support and
  450.      share the management of resources in the nets to which they are
  451.      connected with the other agents in those nets. Like hosts, ST
  452.      gateways may have to replicate packets for conference
  453.      connections.
  454.      
  455.      4.1.3  Replicators
  456.      
  457.              In networks that lack multi-addressing or broadcast
  458.      capability it may be desirable to provide special server hosts to
  459.      handle the replication required for conferences.  Replicators are
  460.      needed in situations where the load caused by replication would
  461.      produce congestion at a gateway port.  Use of a replicator adds
  462.      delay and is probably not warranted unless the number of copies
  463.      needed in a particular net exceeds some threshold that depends
  464.      
  465.      
  466.                                     -8-
  467.      
  468.      
  469.      IEN 119                      ST.DOC              7 September 1979
  470.      
  471.      
  472.      upon network port capacity. In worst-case situations a daisy-
  473.      chain type of replication might be required because the peak rate
  474.      could not be sustained at any network site.  The existence of a
  475.      replicator does not eliminate the need for replication in hosts
  476.      and gateways.  For example, a host in a conference with some
  477.      participants on the same net but others on other nets may need to
  478.      send packets to one or more gateways for speedy internet delivery
  479.      as well as to a replicator for automatic distribution to other
  480.      local net participants.
  481.      
  482.      4.1.4  Access Controllers
  483.      
  484.              The management of ST conference connections involves the
  485.      services of an access controller.  The functions of an access
  486.      controller are to control conference participation and provide a
  487.      central source for information about the data rate requirements
  488.      of a conference connection. Ideally, access control services
  489.      would be provided by a set of hosts distributed throughout the
  490.      catenet that shared information about the connections being
  491.      controlled.  The addresses of these public access controllers
  492.      would be known to all other agents, and a query to any one
  493.      controller would provide information about any connection.  In
  494.      the absence of public access controllers, the protocol allows any
  495.      host to serve as a private access controller.  It is proposed to
  496.      use a bit in the conference connection name to allow agents to
  497.      determine whether a public or private access controller is
  498.      responsible for a particular conference.  The name identifies the
  499.      "owner" of the conference.  The owner is also the access
  500.      controller in the private case.
  501.      
  502.      4.2  Connections
  503.      
  504.              Most applications for ST connections require full-duplex
  505.      (bi-directional) communication between the parties in a point-
  506.      to-point connection and omni-directional communication among the
  507.      participants in a conference connection.  In the design of the
  508.      protocol two different approaches to realizing the desired
  509.      capability have been considered. The first, called the simplex
  510.      approach, uses a combination of simplex (one-way) connections.
  511.      For example, in the simplex approach the caller requests a
  512.      simplex connection to the called party, who, after accepting the
  513.      connection, requests another simplex connection for the return
  514.      path to the caller.  In the second, called the full-duplex
  515.      approach, the caller requests a full-duplex connection at the
  516.      outset, and as soon as the called party has accepted the
  517.      connection, data can flow in both directions.
  518.      
  519.              For conference connections, the simplex approach requires
  520.      each participant to request a simplex connection to all the
  521.      others.  The full-duplex approach requires that a participant
  522.      request connection only to those that have not already requested
  523.      
  524.      
  525.                                     -9-
  526.      
  527.      
  528.      IEN 119                      ST.DOC              7 September 1979
  529.      
  530.      
  531.      connection to him.
  532.      
  533.              Both approaches can provide workable bases for the
  534.      required capabilities.  The pros and cons for both may be
  535.      summarized as follows:
  536.      
  537.            1.  Simplex connections can take maximum advantage of
  538.                available resources by using different routes for the
  539.                forward and return paths.  The routing of a full-duplex
  540.                connection is more likely to fail since a path with the
  541.                desired capacity in both directions must be found.
  542.                This advantage for simplex connections is most
  543.                pronounced in networks where load is assymetrical, a
  544.                situation to be expected in nets carrying relatively
  545.                heavy data loads.
  546.      
  547.            2.  Full-duplex connections can, except perhaps under
  548.                conditions of heavy load, be set up more rapidly and
  549.                with less control message traffic. The difference is
  550.                most pronounced for conference connections.  With
  551.                full-duplex components of a conference connection, m-l
  552.                connection requests are required for an m-participant
  553.                conference, since each new participant must connect to
  554.                all those already in the conference.  In the case of
  555.                simplex components each new participant must also
  556.                connect to all those already in the conference; but, in
  557.                addition, those already in must connect to each
  558.                newcomer.  This activity adds sigma (m-l) connection
  559.                requests (and responses) to the setup procedure.
  560.      
  561.            3.  Simplex connections have an advantage in situations in
  562.                which two parties attempt to call each other at the
  563.                same time.  The two simplex connections can easily be
  564.                combined into the required full-duplex connection. If
  565.                the two parties start out with full-duplex connections,
  566.                one of them must be refused or disconnected, a somewhat
  567.                more complex task for the higher level protocol
  568.                requesting the connection.
  569.      
  570.              This document proposes a full-duplex basis for ST
  571.      connections because the author believes that the advantage of
  572.      relative simplicity and efficiency in setting up conference
  573.      connections outweighs the advantages of the simplex basis.  To
  574.      allow connections with assymetrical flow requirements, the
  575.      protocol allows users to specify different data rates in the two
  576.      directions.
  577.      
  578.              Even though traffic can flow in both directions on an ST
  579.      connection, the connection has an orientation, and packets are
  580.      said to move in either the "forward" or "backward" direction
  581.      depending on whether they are moving away from or toward the
  582.      
  583.      
  584.                                    -10-
  585.      
  586.      
  587.      IEN 119                      ST.DOC              7 September 1979
  588.      
  589.      
  590.      originator of the connection.
  591.      
  592.              ST provides two types of connections:  Point-to-Point
  593.      (PTP) and Conference (CONF).  PTP connections use different
  594.      packet header formats and setup procedures to reduce overhead and
  595.      allow faster setup for that more frequently used type.
  596.      
  597.      
  598.      4.2.1  Point-to-Point (PTP) Connections
  599.      
  600.              PTP connections are set up in response to a CONNECT
  601.      command from an originating process to an ST agent.  The CONNECT
  602.      specifies the following:
  603.      
  604.            1.  The NAME of the connection.  The NAME is obtained by
  605.                concatenating the ST address of the originating process
  606.                (ORIGIN) with an arbitrary number.  The ST address is
  607.                the internet host address (ala IP) concatenated with an
  608.                "extension" field (32 bits) to specify a process in the
  609.                host (a telephone for NVP applications).  It is the
  610.                responsibility of the originating process to provide
  611.                arbitrary numbers that keep the names of all
  612.                outstanding connections unique.
  613.      
  614.            2.  The internet address of the process to which the
  615.                connection is desired.  This address is called the
  616.                "TARGET." The terms "ORIGIN" and "TARGET" are used
  617.                instead of "SOURCE" and "DESTINATION" because the
  618.                latter terms will be used to refer to the senders and
  619.                receivers of packets travelling on the connection.
  620.                Thus the ORIGIN process can be both SOURCE and a
  621.                DESTINATION for packets on the full-duplex connection.
  622.      
  623.            3.  A flow specification (FLOW-SPEC) that tells ST agents
  624.                about the desired characteristics of the connection.
  625.                In addition to information about the data rate
  626.                requirements for both directions of the full-duplex
  627.                connection, the FLOW-SPEC has a PRECEDENCE value that
  628.                agents can use as a basis for the preemption of this or
  629.                other connections as part of the traffic control
  630.                strategy.  The FLOW-SPEC is discussed in more detail in
  631.                Section 4.5.
  632.      
  633.            4.  An arbitrary 16-bit number that the agent is to use to
  634.                identify all ST packets that it will send to the
  635.                originator on the connection (the backward direction).
  636.                This identifier is called the "CID.B."  If the
  637.                connection request is accepted, the originator will be
  638.                given a CID.F to be used to identify all packets it
  639.                sends in the forward direction on the connection.
  640.                These CID's allow abbreviated headers to be used on ST
  641.      
  642.      
  643.                                    -11-
  644.      
  645.      
  646.      IEN 119                      ST.DOC              7 September 1979
  647.      
  648.      
  649.                packets and provide a means for agents to rapidly
  650.                locate the stored forwarding table involved in handling
  651.                a received packet.  CID's are assigned by the agents
  652.                receiving packets and need be only locally unique since
  653.                they are reassigned on a hop-by-hop basis.  The CID to
  654.                be used on the next hop is stored in the agent's
  655.                forwarding table.
  656.      
  657.              During the setup procedure the CONNECT command propagates
  658.      from agent to agent until it reaches the TARGET process.  This
  659.      propagation differs from ordinary packet forwarding in that the
  660.      intermediate agents inspect the command, take appropriate action,
  661.      and retain information about the requested connection.  If the
  662.      TARGET process agrees to the connection, it sends an ACCEPT
  663.      command that is propagated back through the same intermediate
  664.      agents that handled the CONNECT.  The agents take appropriate
  665.      action as they process the ACCEPT.  If the TARGET process is not
  666.      willing to accept the connection, it issues a REFUSE command
  667.      which propagates back in the same fashion as the ACCEPT.
  668.      REFUSE's are generated by intermediate agents if they find
  669.      themselves unable to support a requested connection. An agent
  670.      receiving such a REFUSE tries alternate routes and passes the
  671.      REFUSE back another hop only when it has exhausted its routing
  672.      alternatives. Appropriate REASON codes are included in the REFUSE
  673.      commands.
  674.      
  675.              After a connection has become established (an ACCEPT has
  676.      reached the ORIGIN), changes to the FLOW-SPEC can be accomplished
  677.      by the ORIGIN issuing a new CONNECT or the TARGET issuing a new
  678.      ACCEPT command.  (Actually, the TARGET can issue a new ACCEPT at
  679.      any time after issuing the first ACCEPT, and it can also at that
  680.      time begin sending packets on the connection although there is
  681.      some hazard in doing so since they may pass the ACCEPT enroute
  682.      and be discarded.)  For the case where the FLOW-SPEC calls for a
  683.      connection whose rate can be varied at the discretion of the
  684.      catenet, intermediate agents issue CONNECT's and ACCEPT's to
  685.      inform other agents and the end users about rate changes.  These
  686.      commands are marked to distinguish them from end user commands.
  687.      
  688.              The ACCEPT command contains the same kinds of information
  689.      as the CONNECT except that the backward connection identifier
  690.      (CID.B) is replaced by a forward identifier (CID.F).  In
  691.      addition, the FLOW-SPEC will generally be different and will
  692.      indicate the data rates and delay characteristics accepted by the
  693.      agents.  The CONNECT that arrives at the TARGET will be similarly
  694.      modified from the CONNECT that was issued by the ORIGIN and will
  695.      match the ACCEPT received by the ORIGIN.  See Section 4.5 for a
  696.      discussion of the changes that can occur to the FLOW-SPEC.
  697.      
  698.      
  699.      
  700.      
  701.      
  702.                                    -12-
  703.      
  704.      
  705.      IEN 119                      ST.DOC              7 September 1979
  706.      
  707.      
  708.      4.2.2  Conference (CONF) Connections
  709.      
  710.              The type of connection required for voice conferencing is
  711.      one in which any participant can send messages to all the others.
  712.      Connections of this type have been called "omniplex" connections.
  713.      ST realizes a conference connection by means of a superposition
  714.      of tree-like components that start from an origin process (the
  715.      root) and extend to a set of targets (the leaves).  The set of
  716.      participants in a conference is represented by a bit map.  Each
  717.      participant has a location in the conference bit map that is
  718.      assigned by the access controller (AC).  When a conference
  719.      CONNECT command is given, a TARGET-BIT-MAP (TBM) is used to
  720.      specify the set of targets to which connection is requested.  The
  721.      TBM is supplied by the AC when a participant joins a conference.
  722.      The tree-like components all have the same NAME, and intermediate
  723.      agents combine branches from the components whenever possible to
  724.      minimize resources committed to the conference.  Because of this
  725.      combining, an ORIGIN-BIT-MAP (OBM) is needed to represent the set
  726.      of originators that have requested connection to a particular
  727.      participant.
  728.      
  729.              The list of participating processes in a CONF connection
  730.      is not carried in the CONNECT request but is is maintained by the
  731.      AC and provided to agents and participants when needed.  Another
  732.      function of the AC is to provide the FLOW-SPEC for the connection
  733.      to any agent on request.  The reason for assigning these tasks to
  734.      an access controller is to prevent unauthorized connection to a
  735.      conference and to assure that all components of the connection
  736.      use the same FLOW-SPEC.
  737.      
  738.              The first step in establishing a conference is to install
  739.      a list of participants and a FLOW-SPEC in an AC.  The list of
  740.      participants may be fixed at the outset or be allowed to grow
  741.      during the course of the conference.  A participant may depart
  742.      from a conference, but his position in the list and the bit maps
  743.      is not reused.  The method by which the list of participants is
  744.      made known to the AC is not of concern to ST itself and is not
  745.      specified in this document.  Higher level protocols such as a
  746.      network voice protocol (NVP) engage in communications between
  747.      participant processes and the AC in the process of setting up a
  748.      conference.  For example, an NVP issues a JOIN  command to
  749.      request access to a conference.  If the NVP process is on the
  750.      participant list or is otherwise acceptable, the AC responds with
  751.      a WELCOME command that among other things tells the participating
  752.      NVP its location in the CONF bit map.  The NVP then sends TELL-ME
  753.      messages to the AC to obtain the participant list and FLOW-SPEC
  754.      for the CONF connection.  This information is provided in INFO
  755.      messages from the AC.  Several of these messages may be required
  756.      to transmit all the information about a large conference.  The
  757.      messages exchanged between participants and the AC are IP.ST
  758.      datagrams.  They cannot be ST packets because no ST connection
  759.      
  760.      
  761.                                    -13-
  762.      
  763.      
  764.      IEN 119                      ST.DOC              7 September 1979
  765.      
  766.      
  767.      exists between the participants and the AC.
  768.      
  769.              Once a participant has received a WELCOME message from
  770.      the AC, it can issue a CONNECT.CONF command to its ST host agent.
  771.      It uses a TARGET-BIT-MAP (TBM) that it received as part of the
  772.      data in the WELCOME message.  This TBM has bits set for all the
  773.      previous joiners of the conference.  The CONNECT.CONF will thus
  774.      attempt to establish a full-duplex path to each of the previous
  775.      joiners.  These paths will make use of common links where
  776.      possible and will result in a connection resembling a tree rooted
  777.      at the site of the process originating the connection.  When the
  778.      CONNECT.CONF is issued by the originator it contains an ORIGIN-
  779.      BIT-MAP (OBM) with a single bit set corresponding to the
  780.      originating participant.  If the CONNECT.CONF is successful
  781.      (i.e., some subset of the targets are reached), an ACCEPT.CONF
  782.      will be returned with bits set in the TBM indicating the
  783.      participants to which connection has been achieved.  In a CONF
  784.      connection attempt, success may not be achieved with the entire
  785.      set of targets specified by TBM.  Some may be unreachable for any
  786.      of a number of reasons.  REFUSE.CONF messages will be returned
  787.      for all such failures with bits in the TBM identifying the
  788.      unreachable participants.  If the failures in a particular
  789.      attempt are due to more than one REASON, at least one REFUSE.CONF
  790.      will be returned for each reason.
  791.      
  792.      
  793.              The technique for setting up conference connections
  794.      proposed for ST results in each participant actively connecting
  795.      to some subset of the others while accepting connections from the
  796.      rest.  The first participant does not issue a CONNECT and accepts
  797.      all the others.  The last connects to all the others and accepts
  798.      none.  Each participant can maintain up-to-date information about
  799.      participation in the conference by utilizing the information in
  800.      the CONNECT and ACCEPT messages it receives.
  801.      
  802.      
  803.              The CONNECT.CONF messages received by agents during the
  804.      setup procedure do not contain information about the identity of
  805.      the participants.  In order to route the connection, the agents
  806.      must acquire this information, and they do so by sending TELL-ME
  807.      messages to the AC and getting INFO messages in response.  They
  808.      need to retain this information only during the routing phase of
  809.      connection setup.  Once the connection is established, bit map
  810.      information in forwarding tables combined with a FORWARDING-BIT-
  811.      MAP (FBM) in the ST packet is sufficient to handle the forwarding
  812.      of packets on the connection.  The FBM is used to specify the set
  813.      of destinations for the packet.  Thus a packet can be sent to all
  814.      or any subset of the connection participants. The source of the
  815.      packet is identified by a number representing the position of the
  816.      source participant in the conference bit map.
  817.      
  818.      
  819.      
  820.                                    -14-
  821.      
  822.      
  823.      IEN 119                      ST.DOC              7 September 1979
  824.      
  825.      
  826.              In the case of a voice conference, no useful purpose is
  827.      accomplished when many people speak at the same time.  It is
  828.      expected that a higher level protocol (part of NVP) would
  829.      regulate the activity of the conference and would normally allow
  830.      one or perhaps two persons to transmit speech at the same time.
  831.      ST is not involved in this aspect of conference control except to
  832.      the extent that if there are too many simultaneous talkers, the
  833.      traffic-handling capability of the connection could be exceeded,
  834.      and ST might discard some of the packets.  The higher level
  835.      control protocol should set the FLOW-SPEC for the connection to
  836.      accommodate the expected traffic flow.  Thus, for a simple one-
  837.      at-a-time conference, ST would be asked for a data rate
  838.      corresponding to a single speech stream.
  839.      
  840.              The above discussion has described a connection
  841.      arrangement suitable for supporting voice conferences in which
  842.      any participant can transmit and be heard by all others.  ST also
  843.      provides another kind of multi-address message delivery
  844.      capability.  If only one participant issues a CONNECT.CONF
  845.      command with a TBM specifying connection to all the others, a
  846.      tree-like connection will be set up that allows the ORIGIN to
  847.      send packets to all the others and receive from any of the
  848.      others, but packets sent by the others will be received only by
  849.      the ORIGIN.
  850.      
  851.      4.2.3  Taking Connections Down
  852.      
  853.              The process of taking a connection down is initiated
  854.      either by an ORIGIN issuing a DISCONNECT message or a TARGET
  855.      issuing a REFUSE. These messages propagate from agent to agent
  856.      along the connection path so that intermediate agents can take
  857.      appropriate action to clean up their stored information about the
  858.      connection.
  859.      
  860.              Connections can also be taken down as a result of
  861.      intermediate agents detecting a faulty link or gateway or
  862.      deciding to preempt the connection.  In this case the agent or
  863.      agents involved issue a DISCONNECT/ REFUSE pair that propagate in
  864.      the appropriate directions.  A REASON code in the messages
  865.      informs the users as to the cause of the disconnection.
  866.      
  867.              In the case of conference connections, bit maps allow
  868.      selective disconnection and refusal.
  869.      
  870.      4.3  Types of Service
  871.      
  872.              ST offers two types of service for packets travelling on
  873.      connections.  Neither type has any delivery guarantees, i.e.,
  874.      there are no acknowledgements or retransmissions on either a
  875.      hop-by-hop or an end-to-end basis.  Neither type guarantees
  876.      packet integrity; i.e., if local nets offer a type of service
  877.      
  878.      
  879.                                    -15-
  880.      
  881.      
  882.      IEN 119                      ST.DOC              7 September 1979
  883.      
  884.      
  885.      that can deliver packets with bits in error, ST may use that type
  886.      of service.  The headers of ST packets are sum-checked by ST
  887.      agents, but the data portions are not.
  888.      
  889.              The two types of service differ in whether or not they
  890.      use the channel capacity nominally allocated to the connection
  891.      and also in the strategy used by intermediate agents in buffering
  892.      them.  The two types are:
  893.      
  894.            1.  Stream Packets (called ST.ST packets).  These packets
  895.                use the allocated resources and are buffered for a
  896.                short time only, since they are intended for
  897.                applications such as speech communication where a late
  898.                packet is not worth delivering.  They are discarded by
  899.                intermediate agents if queue conditions indicate that
  900.                they cannot be delivered in a timely fashion.
  901.      
  902.            2.  Datagrams (called ST.DG packets).  These packets have
  903.                the same form as ST.ST packets except for a flag bit in
  904.                the header and travel over the same connection path.
  905.                They use allocated resources only when spare capacity
  906.                exists, e.g., when the ST.ST flow drops below the
  907.                allocated value.  Otherwise they share local net
  908.                resources with other IP datagram traffic.  They are
  909.                buffered with a queueing strategy appropriate for
  910.                datagram traffic and are discarded only when agent
  911.                buffer resources approach exhaustion.  They are
  912.                intended for use by higher level protocols such as NVP
  913.                in applications such as dynamic control of the "floor"
  914.                in a conference.  They are also used by ST itself for
  915.                connection management.
  916.      
  917.      4.4  Packet Aggregation
  918.      
  919.              ST allows any ST packets, stream or datagram, to be
  920.      aggregated together that have the same next-agent local-net
  921.      destination.  "Aggregation" is a form of multiplexing, but is
  922.      given a different name to distinguish it from the multiplexing
  923.      done in the IP Multiplexing protocol that allows multiplexing
  924.      only for packets with the same end-to-end source and destination.
  925.      The term "envelope" is used to refer to any ST message sent from
  926.      one agent to another.  An envelope may contain one or more ST
  927.      packets and is limited in size by the maximum size of packet that
  928.      the local net can carry.  The envelope has a short header in
  929.      addition to the header of the individual aggregated packets.  See
  930.      Section 5.0 for a description of header formats.
  931.      
  932.              The ST aggregation technique requires agents to look
  933.      inside of received envelopes and handle the packets as individual
  934.      entities.  This procedure adds to the computing load of gateways,
  935.      but can achieve significant communication savings in networks
  936.      
  937.      
  938.                                    -16-
  939.      
  940.      
  941.      IEN 119                      ST.DOC              7 September 1979
  942.      
  943.      
  944.      with high per-packet overhead such as SATNET, particularly when
  945.      many short packets must be handled.
  946.      
  947.      4.5  Flow Specifications
  948.      
  949.              The FLOW-SPEC that is carried by CONNECT and ACCEPT
  950.      messages contains several fields.  Some are specified by the
  951.      originator of the CONNECT.  Others are produced either during the
  952.      process of setting up the connection or changing its allowed flow
  953.      characteristics.  Some apply in common to both directions of the
  954.      full-duplex connection.  Others apply individually to allow
  955.      different flows in the two directions and appear in pairs in the
  956.      control messages.
  957.      
  958.              Data rate, the basic quantity used in traffic control
  959.      computations, is specified by means of three parameters; a stream
  960.      interval (SI), a packet length (PL), and a duty factor (DF).  The
  961.      average expected data rate can be computed by taking the product
  962.      of PL, DF, and the reciprocol of SI.  The FLOW SPEC allows for
  963.      one value each for SI and DF for each direction.  However, as
  964.      many as four values of PL can be provided as options, allowing
  965.      the ST agents flexibility in allocating resources for some types
  966.      of traffic flow.
  967.      
  968.              The flow type (TYPE) parameter is intended to allow ST to
  969.      take into account a variety of different user load
  970.      characteristics.  The set of possible types can be expected to
  971.      grow with experience, but a relatively few types seem to be
  972.      adequate to deal with presently contemplated voice encoding
  973.      techniques.  These are:
  974.      
  975.            1.  Fixed Rate.  The data rate is held fixed for the life
  976.                of the connection.  A simple speech encoder that can
  977.                run at only one rate would use this type value with all
  978.                four PL's set to the same value.  A somewhat more
  979.                complex encoder that could run at more than one rate
  980.                but could not change rates on the fly would use the
  981.                fixed-rate type but could offer a choice of up to four
  982.                values for PL.  A variable-rate vocoder such as the
  983.                LPC2 vocoder used in the ARPANET that has a rate that
  984.                varies depending on the short time behavior of the
  985.                speech signal would also use the fixed-rate type but
  986.                would set the duty factor to a lower value than the 0.5
  987.                or so used by a simple encoder.
  988.      
  989.            2.  Multiple Rate.  The data rate allowed can be of any of
  990.                the four specified by the four PL's and the agents are
  991.                free to change rates at any time to accommodate to
  992.                network load changes.  Whenever an agent changes the
  993.                rate, it sends appropriate CONNECT and ACCEPT messages
  994.                to tell other agents and the users about the change.
  995.      
  996.      
  997.                                    -17-
  998.      
  999.      
  1000.      IEN 119                      ST.DOC              7 September 1979
  1001.      
  1002.      
  1003.                Since such rate changes require extra communication and
  1004.                processing in the catenet, agents would have to avoid
  1005.                frequent changes.  This flow type would be used by
  1006.                enoders that run at a variety of rates and can switch
  1007.                rates rapidly but need to do so explicitly either
  1008.                because packet formats must change with rate changes or
  1009.                because some parameter such as sampling rate must be
  1010.                changed at sender and receiver.  This flow type could
  1011.                also be useful for sending data rather than voice over
  1012.                ST connections.
  1013.      
  1014.            3.  Prioritized Variable Rate.  This flow type is intended
  1015.                for use by certain advanced encoders of a kind called
  1016.                "embedded" where subsets of the coded bit stream can be
  1017.                stripped en route without loss of intelligibility.
  1018.                There is, of course, some loss of quality and/or
  1019.                ability to withstand acoustical background noise when
  1020.                stripping occurs.  For this flow type each of the four
  1021.                PL's corresponds to one of the four packet priorities
  1022.                that can be attached to ST.ST packets.  The encoder
  1023.                would place the bits needed for its lowest rate in the
  1024.                highest priority packet, the next lowest in the second
  1025.                highest, etc.  When pressed for channel capacity,
  1026.                agents would be free to discard the lower priority
  1027.                packets for this flow type.  The overall precedence of
  1028.                the connection would also affect the probability of
  1029.                packet discard.  It is not anticipated that agents
  1030.                would send explicit messages to announce that
  1031.                discarding was taking place.
  1032.      
  1033.              Another set of parameters in the FLOW-SPEC is concerned
  1034.      with transmission delay.  ST does not allow the user to specify a
  1035.      delay requirement, but it does allow some control over the
  1036.      tradeoff between delay and data rate options during the routing
  1037.      process.  A ROUTING-STRATEGY parameter is provided for this
  1038.      purpose.  Currently, two strategy options for PTP connections are
  1039.      envisioned, but others could be added if desired.  One gives
  1040.      preference to minimizing delay at the expense of data rate.  The
  1041.      other gives preference to data rate over delay.  The ROUTING-
  1042.      STRATEGY options are meaningful only when data rate options are
  1043.      available.  Otherwise data rate is as absolute requirement in
  1044.      routing.
  1045.      
  1046.              While a user cannot specify a delay requirement to ST, ST
  1047.      does provide the user with an estimate of both minimum delay and
  1048.      delay dispersion in fields of the FLOW-SPEC.  The estimates are
  1049.      based on a priori statistics relating delays to average network
  1050.      loads.  When an agent propagates a CONNECT packet, it adds values
  1051.      from tables indexed on the current load estimate to the MIN-DELAY
  1052.      and DISPERSION fields of the FLOW-SPEC for the forward direction.
  1053.      It performs the same function for the backward direction as it
  1054.      
  1055.      
  1056.                                    -18-
  1057.      
  1058.      
  1059.      IEN 119                      ST.DOC              7 September 1979
  1060.      
  1061.      
  1062.      propagates the ACCEPT.  The MIN-DELAY is the simple sum of the
  1063.      hop-to-hop contributions, but the DISPERSION is a sum of squares.
  1064.      The receiver can compute an estimate of overall delay by adding
  1065.      the MIN-DELAY to the square root of the DISPERSION.  The
  1066.      DISPERSION estimate by itself can be useful in setting the
  1067.      reconstitution delay value needed to play out satisfactory speech
  1068.      for listeners.  The proper value can vary over a wide range
  1069.      depending on the path through a catenet of networks with very
  1070.      different delay characteristics.
  1071.      
  1072.              Another parameter set by agents during the routing
  1073.      process is the ACCEPTED-RATE field.  This field informs the users
  1074.      as to which of the four possible data rate options (PL's) have
  1075.      been accepted for each of the two directions of the connection.
  1076.      Of course, if none were acceptable, a REFUSE would be returned
  1077.      with a REASON code indicating unavailability of resources at the
  1078.      requested precedence level.  Another flow-related reason for
  1079.      refusal could be an inability of the networks to handle a too-
  1080.      short stream interval.
  1081.      
  1082.              All FLOW-SPEC parameters except PRECEDENCE and ROUTING-
  1083.      STRATEGY can be independently specified or are reported
  1084.      separately for each of the two directions of the full-duplex
  1085.      connection.  The exceptions are required to apply to the entire
  1086.      connection to simplify the task of gateways in handling
  1087.      connections.
  1088.      
  1089.              The ROUTING-STRATEGY field has other control functions in
  1090.      addition to weighting the tradeoff between data rate and delay.
  1091.      For CONF connections it indicates whether or not data rate
  1092.      options must match in both directions (a requirement for voice
  1093.      conferencing) or can be negotiated independently.  If ST agents
  1094.      support split routing, (a capability to divide the traffic on a
  1095.      connection among two or more paths) the ROUTING-STRATEGY field
  1096.      will indicate whether or not this technique is to be applied to
  1097.      the connection. Split routing also requires additional fields to
  1098.      indicate the fraction of the nominal traffic that has been
  1099.      accepted or is requested to be handled. This document does not
  1100.      propose the implementations of split routing in the first version
  1101.      of ST.
  1102.      
  1103.      
  1104.      
  1105.      
  1106.      
  1107.      
  1108.      
  1109.      
  1110.      
  1111.      
  1112.      
  1113.      
  1114.      
  1115.                                    -19-
  1116.      
  1117.      
  1118.      IEN 119                      ST.DOC              7 September 1979
  1119.      
  1120.      
  1121.      5.0  PACKET FORMATS
  1122.      
  1123.              The messages sent between ST agents on connections are
  1124.      envelopes containing one or more ST packets.  The envelope
  1125.      consists of an envelope header (EH) followed by one or more
  1126.      packet headers (PH's) followed by the data portions of the
  1127.      packets in the same order.  The envelope thus has the form:
  1128.      
  1129.              EH, PH1, PH2, . . .PHn, DATA1, DATA2, . . . DATAn
  1130.      
  1131.      The reason for aggregating the headers separately from the data
  1132.      is that doing so allows the header region to be checksummed
  1133.      easily as a unit before attempting to parse the envelope.  It is
  1134.      expected that ST will be used in networks that can deliver
  1135.      messages with bits in error and that some non-negligible fraction
  1136.      of the messages will have such errors.  To require the entire
  1137.      envelope to be error-free in order to use any of it would result
  1138.      in an excessive rate of lost packets.
  1139.      
  1140.              Since ST operates as an extension of IP, the envelope
  1141.      arrives at the same network port that IP uses to receive IP
  1142.      datagrams.  It is proposed to use a unique code in the first
  1143.      field of the message to identify it as an ST envelope.  The first
  1144.      four bits of an IP datagram are defined to be the Version Number
  1145.      field.  It is therefore proposed to use one of the 16 possible IP
  1146.      versions to distinguish ST envelopes from IP datagrams.  With
  1147.      this convention an envelope header will have the following
  1148.      format:
  1149.      
  1150.      
  1151.      
  1152.      
  1153.      
  1154.      
  1155.      
  1156.      
  1157.      
  1158.      
  1159.      
  1160.      
  1161.      
  1162.      
  1163.      
  1164.      
  1165.      
  1166.      
  1167.      
  1168.      
  1169.      
  1170.      
  1171.      
  1172.      
  1173.      
  1174.                                    -20-
  1175.      
  1176.      
  1177.      IEN 119                      ST.DOC              7 September 1979
  1178.      
  1179.      
  1180.                             ENVELOPE HEADER
  1181.      
  1182.                       0                   1
  1183.                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1184.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1185.                      !  ST   !VERSION! HEADER-LENGTH !
  1186.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1187.                      !          TOTAL-LENGTH         !
  1188.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1189.                      !             CKSUM             !
  1190.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1191.      
  1192.                ST is the particular IP Version Number assigned to
  1193.                identify ST envelopes.
  1194.      
  1195.                VERSION is the ST version number.  This document is a
  1196.                proposal for VERSION 1.
  1197.      
  1198.                HEADER-LENGTH* is the length in words of the envelope
  1199.                header (3) plus the sum of the header lengths of the
  1200.                aggregated packets.
  1201.      
  1202.                TOTAL-LENGTH is the length of the entire envelope.  It
  1203.                does not include any local net headers or trailers.
  1204.      
  1205.                CKSUM covers the envelope header and all packet
  1206.                headers.
  1207.      
  1208.      ++++++++++++++
  1209.      *All ST communications use the 16-bit word as a basic unit.  All
  1210.      lengths are in word units.
  1211.      ++++++++++++++
  1212.      
  1213.      
  1214.      
  1215.      
  1216.      
  1217.      
  1218.      
  1219.      
  1220.      
  1221.      
  1222.      
  1223.      
  1224.      
  1225.      
  1226.      
  1227.      
  1228.      
  1229.      
  1230.      
  1231.      
  1232.      
  1233.                                    -21-
  1234.      
  1235.      
  1236.      IEN 119                      ST.DOC              7 September 1979
  1237.      
  1238.      
  1239.              The individual packet headers have one of two formats
  1240.      depending on whether they are for PTP or CONF connections.  These
  1241.      formats are:
  1242.      
  1243.                            PTP PACKET HEADER
  1244.      
  1245.                       0                   1
  1246.                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1247.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1248.                      !              CID              !
  1249.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1250.                      !0!     BITS    !  DATA-LENGTH  !
  1251.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1252.      
  1253.                            CONF PACKET HEADER
  1254.      
  1255.                       0                   1
  1256.                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1257.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1258.                      !              CID              !
  1259.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1260.                      !1!     BITS    !  DATA-LENGTH  !
  1261.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1262.                      !  Spare  ! FBML! !    SID      !
  1263.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1264.                      !        FBM - 1st word         !
  1265.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1266.                                     .
  1267.                                     .
  1268.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1269.                      !        FBM - nth word         !
  1270.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1271.      
  1272.                CID is an arbitrary identifier assigned by the agent
  1273.                receiving the packet for the purpose of identifying the
  1274.                connection on which the packet is travelling.  Since
  1275.                the CID is unique only to the agent that assigned it,
  1276.                it will generally have a different value on each hop of
  1277.                the connection path.
  1278.      
  1279.                BITS are defined as follows:
  1280.                  Bit 1 distinguishes stream packets (ST.ST) from
  1281.                  datagrams (ST.DG) (1 = DG).
  1282.      
  1283.                  Bits 2 and 3 define the packet priority (00 = highest
  1284.                  priority).
  1285.      
  1286.                  Bits 4 and 5 are spares.
  1287.      
  1288.                  Bits 6 and 7 are unused (may be used by higher level
  1289.                  protocols if desired).
  1290.      
  1291.      
  1292.                                    -22-
  1293.      
  1294.      
  1295.      IEN 119                      ST.DOC              7 September 1979
  1296.      
  1297.      
  1298.                DATA-LENGTH is the length of the data field in words.
  1299.      
  1300.                FBML (3 bits) is one less than the length of the
  1301.                Forwarding Bit Map (FBM) in words.
  1302.      
  1303.                SID (7 bits) identifies the source of the packet on a
  1304.                CONF connection (the source is implicit for a PTP
  1305.                connection packet).  The value of SID corresponds to
  1306.                the bit position of the source in the conference bit
  1307.                map.  Bit numbers start with zero, and positions start
  1308.                with the left-most (most significant) bit of the first
  1309.                word of the bit map.
  1310.      
  1311.                FBM is the Forwarding Bit Map.  It can be at most 128
  1312.                bits (8 words) long, and thus it limits conferences to
  1313.                128 participants (a generous number).  Ones in the FBM
  1314.                indicate that the packet is to be delivered to the
  1315.                corresponding participants.  The FBM is allowed to
  1316.                increase in one word increments to allow new
  1317.                participants to enter during the course of a
  1318.                conference, but it does not shrink when participants
  1319.                leave, and bit positions are not reused.
  1320.      
  1321.              As pointed out in Section 3.0, ST supports a second type
  1322.      of communication called IP.ST datagrams.  These are ordinary IP
  1323.      datagrams with an "ST" value in the protocol field.  They are
  1324.      used to allow higher level protocols to communicate prior to the
  1325.      setting up of an ST connection, and they are also used for
  1326.      communication between access controllers and other ST agents
  1327.      during the setup of CONF connections.  They are strictly point-
  1328.      to-point communications since they are IP datagrams.  According
  1329.      to the conventions for IP datagrams, these messages would have
  1330.      the form:
  1331.      
  1332.              IP Header, IP.ST Header, Data
  1333.      
  1334.      
  1335.      
  1336.      
  1337.      
  1338.      
  1339.      
  1340.      
  1341.      
  1342.      
  1343.      
  1344.      
  1345.      
  1346.      
  1347.      
  1348.      
  1349.      
  1350.      
  1351.                                    -23-
  1352.      
  1353.      
  1354.      IEN 119                      ST.DOC              7 September 1979
  1355.      
  1356.      
  1357.              The IP.ST Header has the following form:
  1358.      
  1359.                           IP.ST PACKET HEADER
  1360.      
  1361.                       0                   1
  1362.                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1363.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1364.                      ! IP.ST !VERSION!    LENGTH     !
  1365.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1366.                      !            SOURCE-            !
  1367.                      +-+-+                       +-+-+
  1368.                      !           EXTENSION           !
  1369.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1370.                      !          DESTINATION-         !
  1371.                      +-+-+                       +-+-+
  1372.                      !           EXTENSION           !
  1373.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1374.      
  1375.      
  1376.                IP.ST is a value chosen to be different from the "ST"
  1377.                value used in the first four bits of the ST envelope.
  1378.                This field allows IP.ST datagrams to be distinguished
  1379.                from ST envelopes embedded in IP.ST packets, a
  1380.                technique that can be used to get ST envelopes through
  1381.                gateways that do not support ST.
  1382.      
  1383.                VERSION is the ST version number.
  1384.      
  1385.                LENGTH is the total length of the IP.ST packet
  1386.                excluding IP and local net headers, etc.
  1387.      
  1388.                SOURCE- and DESTINATION-EXTENSION's are 32-bit fields
  1389.                used to identify the source and destination processes.
  1390.                Like ARPANET NCP process identifiers, they are not
  1391.                specified by the protocol.  The source and destination
  1392.                host addresses are carried in the IP header.
  1393.      
  1394.      
  1395.      6.0  CONTROL MESSAGES
  1396.      
  1397.              With the exception of communications with access
  1398.      controllers, ST control messages are sent from agent to agent as
  1399.      ST.DG packets with the CID set to zero.  This convention is
  1400.      similar to the ARPANET NCP use of Link 0 for control.
  1401.      Communication with AC's uses IP.ST packets.  The form is
  1402.      otherwise the same.  The control protocol follows a request-
  1403.      response model with all requests expecting responses and all
  1404.      responses expecting acknowledgements.  Retransmission after
  1405.      timeout is used to allow for lost or ignored messages.  A packet
  1406.      may contain more than one control message.  Control messages do
  1407.      not extend across packet boundaries.
  1408.      
  1409.      
  1410.                                    -24-
  1411.      
  1412.      
  1413.      IEN 119                      ST.DOC              7 September 1979
  1414.      
  1415.      
  1416.              Control message headers have the following format:
  1417.      
  1418.                          CONTROL MESSAGE FORMAT
  1419.      
  1420.                       0                   1
  1421.                       0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
  1422.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1423.                      !    OP-CODE    !    LENGTH     !
  1424.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1425.                      !             CKSUM             !
  1426.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1427.                      !           REFERENCE           !
  1428.                      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  1429.      
  1430.                OP-CODE specifies the request or response.
  1431.      
  1432.                LENGTH is the length of the control message in words.
  1433.      
  1434.                CKSUM is the checksum of the control message.  Because
  1435.                the control messages travel in envelopes that may be
  1436.                delivered with bits in error, each control message must
  1437.                be checked before it is acted upon.
  1438.      
  1439.                REFERENCE is an arbitrary reference number used to
  1440.                associate requests with responses and acknowledgements.
  1441.      
  1442.              The header is followed by parameters as required for the
  1443.      particular OP-CODE.  Each parameter is identified with a P-CODE
  1444.      byte that is followed by a P-LENGTH byte indicating the length of
  1445.      the parameter (including the P-CODE, P-LENGTH word) in words.
  1446.      Parameters can be sent in any order. The format of individual
  1447.      parameters is specified in the following sections in connection
  1448.      with the OP-CODE's with which they are used.
  1449.      
  1450.              Control messages fall into two categories according to
  1451.      whether they deal with PTP or CONF connections.  There are four
  1452.      messages that are independent of connection type.  These are:
  1453.      
  1454.      6.0.1  [ACK]
  1455.      
  1456.              ACK (OP-CODE = 1) has no parameters.  The REFERENCE in
  1457.      the header is the REFERENCE number of the message being
  1458.      acknowledged.  ACK's are used to acknowledge responses to
  1459.      requests and in some cases constitute responses or partial
  1460.      responses themselves.
  1461.      
  1462.      
  1463.      
  1464.      
  1465.      
  1466.      
  1467.      
  1468.      
  1469.                                    -25-
  1470.      
  1471.      
  1472.      IEN 119                      ST.DOC              7 September 1979
  1473.      
  1474.      
  1475.      6.0.2  [HELLO]
  1476.      
  1477.              HELLO (OP-CODE = 2) is used to determine whether or not
  1478.      another agent is alive and well.  It has no parameters and
  1479.      expects an ACK in response.
  1480.      
  1481.      6.0.3  [ERROR-IN-REQUEST] <REF> <ERROR-TYPE>
  1482.      
  1483.              ERROR-IN-REQUEST (OP-CODE = 3) is sent in response to a
  1484.      request in which an error is detected.  An ACK is expected.  No
  1485.      action is taken on the erroneous request.
  1486.      
  1487.                REF (P-CODE = 7, P-LENGTH = 2) is the REFERENCE number
  1488.                of the erroneous request.
  1489.      
  1490.                ERROR-TYPE is not yet specified.
  1491.      
  1492.      6.0.4  [ERROR-IN-RESPONSE] <REF> <ERROR-TYPE>
  1493.      
  1494.              This message (OP-CODE = 4) is sent in lieu of an ACK for
  1495.      a response in which an error is detected.  No ACK is expected.
  1496.      Action taken by the requester and responder will vary with the
  1497.      nature of the request.
  1498.      
  1499.                REF identifies the erroneous response.
  1500.      
  1501.                ERROR-TYPE is not yet specified.
  1502.      
  1503.      
  1504.      6.1  Control Messages for PTP Connections
  1505.      
  1506.              PTP connections are set up and taken down with the
  1507.      following messages:
  1508.      
  1509.      6.1.1  [CONNECT.PTP] <NAME> <TARGET> <FLOW-SPEC> <CID.B>
  1510.      
  1511.              CONNECT.PTP (OP-CODE = 5) requests the set up (routing)
  1512.      of a PTP connection or asks for a change in the flow
  1513.      specification of a connection already routed.  Its parameters
  1514.      are:
  1515.      
  1516.                NAME (P-CODE = 1, P-LENGTH = 6) is the ST address of
  1517.                the process that originated the CONNECT.PTP (the
  1518.                ORIGIN) concatenated with a 16-bit number chosen to
  1519.                make the name unique.  An ST address is a 32-bit IP
  1520.                host address concatenated with a 32-bit EXTENSION
  1521.                identifier chosen to identify a particular process in
  1522.                the host.  The EXTENSION is provided by some higher-
  1523.                level protocol and is assumed by ST to be unique to the
  1524.                host.  For NVP use the EXTENSION identifies a
  1525.                particular telephone and is presumably a well-known
  1526.      
  1527.      
  1528.                                    -26-
  1529.      
  1530.      
  1531.      IEN 119                      ST.DOC              7 September 1979
  1532.      
  1533.      
  1534.                quantity.
  1535.      
  1536.                TARGET (P-CODE = 2, P-LENGTH = 5) is the ST address of
  1537.                the target process.
  1538.      
  1539.                FLOW-SPEC (P-CODE = 3, P-LENGTH = 18) is a complex
  1540.                parameter that both specifies and reports on the flow
  1541.                requirements and expected delay characteristics of the
  1542.                full-duplex connection.  See Section 4.5 for further
  1543.                information.
  1544.      
  1545.                CID.B (P-CODE = 4, P-LENGTH = 2) is the connection
  1546.                identifier to be used on packets moving in the backward
  1547.                direction on the connection.
  1548.      
  1549.              CONNECT.PTP expects a response.  There are four response
  1550.      possibilities: ACCEPT.PTP, REFUSE.PTP, ACK, and ERROR-IN-REQUEST.
  1551.      Receipt of an ACK means that the agent receiving the request is
  1552.      working on it, and the requester should wait for a future ACCEPT
  1553.      or REFUSE.  ERROR-IN-REQUEST will be returned only when a format
  1554.      error is detected in the CONNECT.PTP.  Other errors, if detected,
  1555.      will elicit REFUSE messages.
  1556.      
  1557.              The processing of CONNECT messages requires care to avoid
  1558.      routing loops that could result from delays in propagating
  1559.      routing information among gateways. The example in Section 7.0
  1560.      describes in some detail the actions of agents in handling
  1561.      CONNECT requests while routing a connection.
  1562.      
  1563.      6.1.2  [ACCEPT.PTP] <NAME> <TARGET> <FLOW-SPEC> <CID.F)
  1564.      
  1565.      ACCEPT.PTP (OP-CODE = 6) is returned to indicate that the
  1566.      requirements of a CONNECT.PTP have been met or that a change in
  1567.      flow specifications has occured.  Parameters are the same as for
  1568.      CONNECT.PTP except that a CID.F (P-CODE = 5, P-LENGTH = 2) is
  1569.      returned for use on packets travelling in the forward direction.
  1570.      The FLOW-SPEC will be modified to show the accepted rate and
  1571.      accumulated delay information (See Section 4.5).
  1572.      
  1573.              ACCEPT messages expect ACK's or ERROR-IN-RESPONSE's.
  1574.      ERROR-IN-RESPONSE will be returned if an ACCEPT is sent to an
  1575.      agent that has no knowledge of the connection.  This may occur if
  1576.      an ACCEPT is generated at the same time that a DISCONNECT is
  1577.      being propagated.
  1578.      
  1579.      6.1.3  [REFUSE.PTP] <NAME> <REASON>
  1580.      
  1581.      REFUSE.PTP (OP-CODE = 7) is returned to indicate that agents have
  1582.      failed to set up a requested connection or that a previously
  1583.      established connection has been lost. REFUSE's are also returned
  1584.      to indicate routing failure, and in such a case may not end up
  1585.      
  1586.      
  1587.                                    -27-
  1588.      
  1589.      
  1590.      IEN 119                      ST.DOC              7 September 1979
  1591.      
  1592.      
  1593.      propagating back to the origin.  TARGET's also issue REFUSE's to
  1594.      take down connections intentionally.
  1595.      
  1596.      REASON (P-CODE = 6, P-LENGTH = 2) indicates the reason for
  1597.      connection refusal.  REASON codes apply also to DISCONNECT
  1598.      messages and include the following:
  1599.      
  1600.                 CODE            EXPLANATION
  1601.      
  1602.                  0       No explanation
  1603.                  1       Target refuses connection
  1604.                  2       Target does not respond
  1605.                  3       Target cannot be reached
  1606.                  4       Connection preempted
  1607.                  5       STREAM INTERVAL too short
  1608.                  6       Requested data rate cannot be handled
  1609.                  7       Connection broken due to network fault
  1610.                  8       Connection broken by ORIGIN
  1611.                  9       Conflicting FLOW-SPECs in CONF connections
  1612.      
  1613.              REFUSE's are ACK'ed and are propagated by intermediate
  1614.      agents if meaningful (i.e., the agents had tables for the
  1615.      connection).  The backward propagation of a refuse may be halted
  1616.      at an intermediate agent if an alternate route exists that has
  1617.      not been tried, and the REASON indicates that it is reasonable to
  1618.      try the alternate route.  (I.e., it does not indicate that the
  1619.      target refuses or does not respond).
  1620.      
  1621.      6.1.4  [DISCONNECT.PTP] <NAME> <REASON>
  1622.      
  1623.              DISCONNECT.PTP (OP-CODE = 8) is sent to request that a
  1624.      previously requested connection be taken down.  It can be
  1625.      generated either by the originator of the CONNECT or by an
  1626.      intermediate agent that executes a preemption or detects a fault.
  1627.      
  1628.              REASON uses the same codes as REFUSE although not all
  1629.      codes apply.
  1630.      
  1631.              DISCONNECT expects an ACK and is propagated in the
  1632.      forward direction so long as agents are encountered that know
  1633.      about the connection.
  1634.      
  1635.              A connection can be taken down either by a REFUSE or a
  1636.      DISCONNECT (or both) depending upon which end first decides to
  1637.      initiate the process. If both start within a propagation time of
  1638.      each other, neither message will reach the opposite end.
  1639.      
  1640.      
  1641.      
  1642.      
  1643.      
  1644.      
  1645.      
  1646.                                    -28-
  1647.      
  1648.      
  1649.      IEN 119                      ST.DOC              7 September 1979
  1650.      
  1651.      
  1652.      6.2  Control Messages for CONF Connections
  1653.      
  1654.      
  1655.              CONF connections are set up and taken down with CONNECT,
  1656.      ACCEPT, REFUSE, and DISCONNECT messages, but the CONF versions of
  1657.      these messages have somewhat different parameters.  In addition,
  1658.      CONF connection setup requires that agents communicate with
  1659.      access controllers by means of TELL-ME and INFO messages.  These
  1660.      latter messages are sent as IP.ST datagrams.  The former are sent
  1661.      as ST.DG packets with CID = 0.
  1662.      
  1663.      6.2.1  [CONNECT.CONF] <NAME> <OBM> <TBM> <CID.B>
  1664.      
  1665.              CONNECT.CONF (OP-CODE = 9) requests the setup (routing)
  1666.      of a CONF connection or asks for a change in flow specifications
  1667.      of a connection already routed.  The parameters NAME and CID.B
  1668.      have the same form and interpretation as they do for CONNECT.PTP
  1669.      except that NAME is the name of the owner of the conference, not
  1670.      the originator of the CONNECT message.  The new parameters OBM
  1671.      and TBM allow the message to deal with multiple ORIGIN and TARGET
  1672.      processes.  The FLOW-SPEC for the connection is obtained from the
  1673.      access controller.
  1674.      
  1675.              OBM (P-CODE = 8, P-LENGTH = 2-9) is the ORIGIN-BIT-MAP.
  1676.      Bits set in the map identify originating processes.  When a
  1677.      CONNECT.CONF is first issued by a user process only one bit is
  1678.      set in OBM identifying the issuer.  However, as the message
  1679.      propagates, intermediate agents may find that they have other
  1680.      CONNECT.CONF messages for the same connection on hand at the same
  1681.      time.  In that case, they can merge the requests so that more
  1682.      bits become set as the message approaches its targets.
  1683.      
  1684.              TBM (P-CODE = 9, P-LENGTH = 2-9) is the TARGET-BIT-MAP.
  1685.      Bits set in the map identify the target processes.  In general,
  1686.      the user process will have set many bits in TBM when it first
  1687.      issues a CONNECT.CONF.  As the message propagates it will split
  1688.      many times, each split reducing the number of bits left set in
  1689.      TBM.  When the CONNECT.CONF's reach their targets only one bit
  1690.      will be left set in each.
  1691.      
  1692.              Since the CONNECT.CONF message does not tell its receiver
  1693.      anything about the actual identities of the target processes,
  1694.      intermediate agents must get this information, as well as the
  1695.      FLOW-SPEC, from the access controller by sending TELL-ME messages
  1696.      and receiving INFO messages in response.  The agents use the NAME
  1697.      to locate the AC, using a bit in the name to distinguish between
  1698.      a public or private AC.  The NAME is the ST address of a process
  1699.      concatenated with a 16-bit number to make the NAME unique.  It is
  1700.      proposed that the most significant bit of that 16-bit number be
  1701.      used to distinguish public from private ACs.  A zero in that bit
  1702.      would indicate a private AC and in that case, agents would send
  1703.      
  1704.      
  1705.                                    -29-
  1706.      
  1707.      
  1708.      IEN 119                      ST.DOC              7 September 1979
  1709.      
  1710.      
  1711.      TELL-ME messages to the process address in the NAME.  In the
  1712.      public case, the agent would communicate with an AC whose address
  1713.      was known a priori to the agent.
  1714.      
  1715.      6.2.2  [ACCEPT.CONF] <NAME> <OBM> <TBM> <FLOW-SPEC> <CID.F>
  1716.      
  1717.              ACCEPT.CONF (OP-CODE = 10) is similar in function to
  1718.      ACCEPT.PTP.  NAME, FLOW-SPEC, and CID.F have the same form and
  1719.      interpretation.  OBM specifies the set of originators to which
  1720.      the ACCEPT is to be propagated.  TBM specifies the set of targets
  1721.      that have accepted the connection.  This set may be a sub-set of
  1722.      the targets requested in the CONNECT to which an ACCEPT responds.
  1723.      The FLOW-SPEC is included in the ACCEPT because it reflects the
  1724.      actual resources granted to the connection.
  1725.      
  1726.      6.2.3  [REFUSE.CONF] <NAME> <OBM> <TBM> <REASON>
  1727.      
  1728.              REFUSE.CONF (OP-CODE = 11) is similar in function to
  1729.      REFUSE.PTP.  As for ACCEPT.CONF, OBM specifies the set of
  1730.      originators to which the REFUSE is to be propagated.  TBM
  1731.      specifies the set of targets that cannot be reached, have
  1732.      refused, etc.  A single REASON applies to all the targets in the
  1733.      TBM.  If more than one REASON applies to a set of targets, as
  1734.      many REFUSE's as REASON's will be sent.
  1735.      
  1736.      6.2.4  [DISCONNECT.CONF] <NAME> <OBM> <TBM> <REASON>
  1737.      
  1738.              DISCONNECT.CONF (OP-CODE = 12) is similar in function to
  1739.      DISCONNECT.PTP.  As for REFUSE.CONF, OBM and TBM specify the sets
  1740.      of originators and targets to which the DISCONNECT applies.
  1741.      
  1742.      6.2.5  [TELL-ME] <NAME> <PART-NUM> <FLOW-SPEC-REQ>
  1743.      
  1744.              TELL-ME (OP-CODE = 13) is sent from an agent or a
  1745.      participant process to an access controller .  The AC is expected
  1746.      to return an INFO message with the requested information.  Either
  1747.      of the latter two parameters may be omitted.
  1748.      
  1749.              PART-NUM (P-CODE = 10, P-LENGTH = 2) specifies the number
  1750.      of the first participant about which information is requested.
  1751.      The response will be a participant list starting with the
  1752.      specified participant and continuing until the maximum packet
  1753.      size is reached or the list is exhausted.
  1754.      
  1755.              FLOW-SPEC-REQ (P-CODE = 11, P-LENGTH = 2) requests the AC
  1756.      to send the FLOW-SPEC for the connection.
  1757.      
  1758.      
  1759.      
  1760.      
  1761.      
  1762.      
  1763.      
  1764.                                    -30-
  1765.      
  1766.      
  1767.      IEN 119                      ST.DOC              7 September 1979
  1768.      
  1769.      
  1770.      6.2.6  [INFO] <NAME> <STATUS> <PART-LIST> <FLOW-SPEC>
  1771.      
  1772.              INFO (OP-CODE = 14) is sent from an AC to an agent or
  1773.      participant process in response to a TELL-ME.  It provides the
  1774.      requested information.  STATUS is always present.  PART-LIST and
  1775.      FLOW-SPEC are present only when requested by the TELL-ME.
  1776.      
  1777.              STATUS (P-CODE = 12, P-LENGTH = 2) carries 2 bytes of
  1778.      information.  Byte 1 is the CONF-TYPE.  Byte 2 gives the length
  1779.      of the participant list.  The following values for CONF-TYPE are
  1780.      defined:
  1781.               Type                  Meaning
  1782.      
  1783.                0         No conference defined with this NAME
  1784.      
  1785.                1         Conference with closed participant list
  1786.      
  1787.                2         Conference with open list and password
  1788.      
  1789.                3         Conference with completely open list (no
  1790.                          password needed).
  1791.      
  1792.      
  1793.              PART-LIST (P-CODE = 13, P-LENGTH = (4m + 2)) provides a
  1794.      section of the participant list starting at the location (PART-
  1795.      NUM) requested in the TELL-ME and continuing until either the end
  1796.      of the list or packet capacity is reached.  The items in the
  1797.      PART-LIST are the ST addresses (64 bits) of the participating
  1798.      processes.  The addresses are present whether or not the
  1799.      participants are active.  The addresses are preceded by a word
  1800.      giving the number of the first participant on the list.
  1801.      
  1802.              FLOW-SPEC is the nominal FLOW-SPEC for the conference.
  1803.      
  1804.      
  1805.      7.0  AN EXAMPLE OF CONF CONNECTION SETUP
  1806.      
  1807.      
  1808.              This section is a rather detailed example of the actions
  1809.      called for by ST in setting up a connection for a conference with
  1810.      four participants. In addition to showing the control message
  1811.      flow, it also indicates the information used and retained by
  1812.      gateways in supporting the connection. For the sake of
  1813.      simplicity, it is assumed that the flow requirements are always
  1814.      met.  The ".CONF" suffix is omitted from OP-CODE's, and
  1815.      parameters such as NAME and FLOW-SPEC that are always the same
  1816.      are also omitted.  In addition, ACK's are not shown but are
  1817.      assumed to occur where required.
  1818.      
  1819.      
  1820.      
  1821.      
  1822.      
  1823.                                    -31-
  1824.      
  1825.      
  1826.      IEN 119                      ST.DOC              7 September 1979
  1827.      
  1828.      
  1829.      
  1830.              The example uses the following network configuration:
  1831.      
  1832.      
  1833.      
  1834.               +---+                +---+                +---+
  1835.               !P3 !                !P2 !                !P1 !
  1836.               +---+                +---+                +---+
  1837.               !ST3!                !ST2!                !ST1!
  1838.               +---+                +---+                +---+
  1839.                 !                    !                    !
  1840.                 !                    !                    !
  1841.             +-------+  +------+  +-------+  +------+  +-------+
  1842.             ! Net A !--! G.AB !--! Net B !--! G.BC !--! Net C !
  1843.             +-------+  +------+  +-------+  +------+  +-------+
  1844.                 !                                         !
  1845.                 !                                         !
  1846.               +---+                                     +---+
  1847.               !ST4!                                     !AC !
  1848.               +---+                                     +---+
  1849.               !P4 !
  1850.               +---+
  1851.      
  1852.      
  1853.              Each participant (Pi) communicates through a host agent
  1854.      called "STi." The communications between the P's and their local
  1855.      ST's are written out as control messages to show the logical flow
  1856.      even though in actual implementations they might be handled very
  1857.      differently.
  1858.      
  1859.              The actions involving ST start after the participants
  1860.      have joined the conference by communicating with the access
  1861.      controller (AC) and have received TARGET-BIT-MAPs (TBMs) telling
  1862.      each Pi to which other Pi's connections are to be set up.  The
  1863.      notation "{ A, B, C }" is used to indicate a bit map with bits
  1864.      set for A, B, and C.  The participants are assumed to have joined
  1865.      in the order of their numbers.  Thus P1 got an empty TBM ({ }),
  1866.      and P4 got TBM = { P1, P2, P3 }.  According to the rules, P1
  1867.      issues no CONNECT messages, but waits for the others to connect
  1868.      to it.  The action thus begins with P2 sending:
  1869.      
  1870.      P2->ST2: [CONNECT] <OBM = { P2 }> <TBM = { P1 }> <CID.B = 3>
  1871.      
  1872.      ST2->AC: [TELL-ME] <PART-NUM = 1> <FLOW-SPEC-REQ>
  1873.      
  1874.      AC->ST2: [INFO] <PART-LIST = ADDR.P1, ADDR.P2, ADDR.P3, ADDR.P4>
  1875.                 <FLOW-SPEC> <STATUS>
  1876.      
  1877.              These last two commands are executed independently by all
  1878.      agents when they first receive a CONNECT.  They will be replaced
  1879.      by the phrase "X gets info" in the following.
  1880.      
  1881.      
  1882.                                    -32-
  1883.      
  1884.      
  1885.      IEN 119                      ST.DOC              7 September 1979
  1886.      
  1887.      
  1888.              ST2 observes that ADDR.P1 is not in its local net and
  1889.      lacking routing knowledge decides to try G.AB (the wrong
  1890.      direction).
  1891.      
  1892.      ST2->G.AB: [CONNECT] <OBM = { P2 }> <TBM = { P1 }> <CID.B = 17>
  1893.      
  1894.              G.AB gets info and decides that net C is unreachable
  1895.      except through net B from whence the CONNECT came.
  1896.      
  1897.      G.AB->ST2: [REFUSE] <OBM = { P2 }> <TBM = { P1 }>
  1898.                   <REASON = 3 (Target cannot be reached)>
  1899.      
  1900.              ST2 decides to try another gateway.
  1901.      
  1902.      ST2->G.BC: [CONNECT] <OBM = { P2 }> <TBM = { P1 }> <CID.B = 17>
  1903.      
  1904.              G.BC gets info, builds a connection entry, and sends:
  1905.      
  1906.      G.BC->ST1: [CONNECT] <OBM = { P2 }> <TBM = { P1 }> <CID.B = 100l>
  1907.      
  1908.              ST1 gets info and sends:
  1909.      
  1910.      ST1->P1: [CONNECT] <OBM = { P2 }> <TBM = { P1 }> <CID.B = 1>
  1911.      
  1912.              Since P1 has already joined the conference and recognizes
  1913.      P2 as another participant, it sends:
  1914.      
  1915.      P1->ST1: [ACCEPT] <OBM = { P2 }> <TBM = { P1 }> <CID.F = 1>
  1916.      
  1917.      ST1->G.BC: [ACCEPT] <OBM = { P2 }> <TBM = { P1 }> <CID.F = 32>
  1918.      
  1919.              At this point G.BC would have the following stored
  1920.      information (neglecting bookkeeping items such as pointers).
  1921.      
  1922.            1.  A connection block with NAME, FLOW-SPEC, and CID.IN =
  1923.                1001 (the same CID can be used for all inputs for the
  1924.                connection).  This information is retained for the life
  1925.                of the connection.  The PART-LIST used in processing
  1926.                may be discarded once an ACCEPT (or REFUSE) has been
  1927.                received and the forwarding tables have been created.
  1928.                However, since there are likely to be other CONNECT's
  1929.                to be processed, it would be efficient to keep the
  1930.                PART-LIST for a time (say several minutes).
  1931.      
  1932.      
  1933.      
  1934.      
  1935.      
  1936.      
  1937.      
  1938.      
  1939.      
  1940.      
  1941.                                    -33-
  1942.      
  1943.      
  1944.      IEN 119                      ST.DOC              7 September 1979
  1945.      
  1946.      
  1947.            2.  Two forwarding tables, one for each packet that might
  1948.                be sent in response to an input.
  1949.      
  1950.                 ITEMS                   #1              #2
  1951.      
  1952.                NET-PORT                  B               C
  1953.      
  1954.                ADDRESS                  ST2             ST1
  1955.      
  1956.                MASK.OBM                { P2 }           { }
  1957.      
  1958.                MASK.TBM                 { }            { P1 }
  1959.      
  1960.                CID.OUT                   17              32
  1961.      
  1962.      
  1963.              The principal function of the masks is to facilitate
  1964.      packet forwarding.  When a packet arrives, the following
  1965.      computation is made for each forwarding table to compute the
  1966.      output FORWARDING-BIT-MAP (FBM):
  1967.      
  1968.              FBM.OUT = FBM.IN & (MASK.OBM U MASK.TBM)
  1969.      
  1970.      If FBM.OUT has no bits set, it is not necessary to send a packet
  1971.      to the address in the table.  Otherwise a packet is sent using
  1972.      the NET-PORT, ADDRESS, and CID.OUT from the table.
  1973.      
  1974.              Having built its tables, G.BC sends:
  1975.      
  1976.      G.BC->ST2: [ACCEPT] <OBM = { P2 }> <TBM = { P1 }> <CID.F = 1001>
  1977.      
  1978.      ST2->P2: [ACCEPT] <OBM = { P2 }> <TBM = { P1 }> <CID.F = 10>
  1979.      
  1980.              At this point P2 and P1 are connected and could begin
  1981.      talking, if permitted by the higher level protocol.
  1982.      
  1983.              In connecting P3 and P4 we will assume that both initiate
  1984.      requests at essentially the same time so that they propagate
  1985.      concurrently.
  1986.      
  1987.      P3->ST3: [CONNECT] <OBM = { P3 }> <TBM = { P1, P2 }> <CID.B = 5>
  1988.      
  1989.      P4->ST4: [CONNECT] <OBM = { P4 }> <TBM = { P1, P2, P3 }>
  1990.                <CID.B = 1>
  1991.      
  1992.              ST3 and ST4 get info.  ST3 notices that P1, P2 both are
  1993.      outside the local net, but ST4 notices as well that P3 is on the
  1994.      same net as P4.
  1995.      
  1996.      They send:
  1997.      
  1998.      
  1999.      
  2000.                                    -34-
  2001.      
  2002.      
  2003.      IEN 119                      ST.DOC              7 September 1979
  2004.      
  2005.      
  2006.      ST3->G.AB: [CONNECT] <OBM = { P3 }> <TBM = { P1, P2 }>
  2007.                  <CID.B = 135>
  2008.      
  2009.      ST4->ST3: [CONNECT] <OBM = { P4 }> <TBM = { P3 }> <CID.B = 27>
  2010.      
  2011.      ST4->G.AB: [CONNECT] <OBM = { P4 }> <TBM = { P1, P2 }>
  2012.                  <CID.B = 27>
  2013.      
  2014.              ST3 forwards the CONNECT to P3, which accepts, and ST3
  2015.      responds to ST4 with:
  2016.      
  2017.      ST3->ST4: [ACCEPT] <OBM = { P4 }> <TBM = { P3 }> <CID.F = 135>
  2018.      
  2019.              Meanwhile G.AB gets info and notices that it has two
  2020.      CONNECT's for the same NAME.  It decides to merge them and sends:
  2021.      
  2022.      G.AB->ST2: [CONNECT] <OBM = { P3, P4 }> <TBM = { P2 }>
  2023.                  <CID.B = 2356>
  2024.      
  2025.      and
  2026.      
  2027.      G.AB->G.BC: [CONNECT] <OBM = { P3, P4 }> <TBM = { P1 }>
  2028.                   <CID.B = 2356>
  2029.      
  2030.              ST2 forwards the CONNECT to P2, which accepts, and ST2
  2031.      sends:
  2032.      
  2033.      ST2->G.AB: [ACCEPT] <OBM = { P3, P4 }> <TBM = { P2 }>
  2034.                  <CID.F = 17>
  2035.      
  2036.              Now G.AB will not continue to propagate the ACCEPT
  2037.      because the CONNECT on which it is working asked for connection
  2038.      to P1 as well as P2.  It will wait for an ACCEPT or REFUSE from
  2039.      P1.
  2040.      
  2041.              G.BC  already knows about the connection to P1, but it
  2042.      does not assume that P1 will accept P3 and P4, so it propagates
  2043.      the CONNECT.
  2044.      
  2045.      G.BC->ST1: [CONNECT] <OBM = { P3, P4 }> <TBM = { P1 }>
  2046.                  <CID.B = 1001>
  2047.      
  2048.              ST1 forwards to P1, which accepts, and ST1 responds:
  2049.      
  2050.      ST1->G.BC: [ACCEPT] <OBM = { P3, P4 }> <TBM = { P1 }> <CID.F =
  2051.      32>
  2052.      
  2053.              In the latter exchange G.BC and ST1 used the same CID's
  2054.      they had used before for this connection.  If either had chosen
  2055.      to use a different CID, the newer value would supercede the
  2056.      earlier one in the forwarding table.
  2057.      
  2058.      
  2059.                                    -35-
  2060.      
  2061.      
  2062.      IEN 119                      ST.DOC              7 September 1979
  2063.      
  2064.      
  2065.              It should be noted that the protocol could allow G.BC to
  2066.      accept the connection from P3 and P4 without forwarding the
  2067.      CONNECT to ST1 because G.BC already knows it has a connection to
  2068.      P1.  This shortcut is not taken because it denies P1 the
  2069.      information about the connection requests from P3 and P4 and the
  2070.      opportunity to refuse those connections if desired.
  2071.      
  2072.      
  2073.              To finish the setup we have:
  2074.      
  2075.      G.BC->G.AB: [ACCEPT] <OBM = { P3, P4 }> <TBM = { P1 }>
  2076.                   <CID.F = 1001>
  2077.      
  2078.              G.AB will now accept for P1 and P2.
  2079.      
  2080.      G.AB->ST3: [ACCEPT] <OBM = { P3 }> <TBM = { P1, P2 }>
  2081.                  <CID.F = 2356>
  2082.      
  2083.      G.AB->ST4: [ACCEPT] <OBM = { P4 }> <TBM = { P1, P2 }>
  2084.                  <CID.F = 2356>
  2085.      
  2086.              When ST3 and ST4 propagate the ACCEPT's to P3 and P4 the
  2087.      conference connection is complete.
  2088.      
  2089.              At this point the forwarding tables in G.BC are the
  2090.      following:
  2091.      
  2092.            ITEM               #1              #2              #3
  2093.      
  2094.          NET-PORT              B               C               B
  2095.      
  2096.          ADDRESS              ST2             ST1             G.AB
  2097.      
  2098.          MASK.OBM           { P2 }            { }          { P3, P4 }
  2099.      
  2100.          MASK.TBM             { }            { P1 }           { }
  2101.      
  2102.          CID.OUT              17              32              2356
  2103.      
  2104.      
  2105.              If at some later time G.BC should decide to preempt the
  2106.      connection, it would issue one message for each forwarding table
  2107.      entry:
  2108.      
  2109.      G.BC->ST2: [REFUSE] <OBM = { P2 }> <TBM = { P1 }>
  2110.                  <REASON = 4 (Connection preempted)>
  2111.      
  2112.      G.BC->ST1: [DISCONNECT] <OBM = { P2, P3, P4 }> <TBM = { P1 }>
  2113.                  <REASON = 4 (Connection preempted)>
  2114.      
  2115.      
  2116.      
  2117.      
  2118.                                    -36-
  2119.      
  2120.      
  2121.      IEN 119                      ST.DOC              7 September 1979
  2122.      
  2123.      
  2124.      G.BC->G.AB: [REFUSE] <OBM = { P3, P4 }> <TBM = { P1 }>
  2125.                  <REASON = 4 (Connection preempted)>
  2126.      
  2127.              Having issued these messages and received ACKs in
  2128.      response (or timed out in the absence of an ACK), the gateway can
  2129.      delete the table entries and reclaim the CID for future use.  The
  2130.      REFUSE sent to G.AB would, of course, be propogated to ST3 and
  2131.      ST4.
  2132.      
  2133.      
  2134.      8.0  AREAS NEEDING FURTHER WORK
  2135.      
  2136.              This document does not completely specify the protocol.
  2137.      Further work is needed to specify error conditions and their
  2138.      handling.  The FLOW-SPEC parameter is not yet laid out in detail.
  2139.      Rerouting has not been thought through sufficiently.  The whole
  2140.      area of routing strategies and the information to be exchanged
  2141.      among gateways has not been given much consideration.  There is
  2142.      also a need for agents to exchange information (not yet
  2143.      specified) about local net resources.  For example, if agents are
  2144.      to make use of local net multi-addressing capability, the
  2145.      selection of a CID for a connection is no longer at the
  2146.      discretion of an individual agent.  A convention is needed to
  2147.      avoid conflicting use of CID's as well as requesting duplicate
  2148.      resources to serve a CONF connection.  The CONNECT control
  2149.      message needs to be extended to allow agents to indicate local
  2150.      net resources that are already committed to a CONF connection.
  2151.      
  2152.      
  2153.      
  2154.      
  2155.      
  2156.      
  2157.      
  2158.      
  2159.      
  2160.      
  2161.      
  2162.      
  2163.      
  2164.      
  2165.      
  2166.      
  2167.      
  2168.      
  2169.      
  2170.      
  2171.      
  2172.      
  2173.      
  2174.      
  2175.      
  2176.      
  2177.                                    -37-
  2178.      
  2179.      
  2180.